<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>银联商务代付业务接口文档</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            color: #333;
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
        }
        h1, h2, h3 {
            color: #2c3e50;
        }
        h1 {
            border-bottom: 2px solid #3498db;
            padding-bottom: 10px;
        }
        h2 {
            border-bottom: 1px solid #bdc3c7;
            padding-bottom: 5px;
            margin-top: 30px;
        }
        table {
            width: 100%;
            border-collapse: collapse;
            margin: 15px 0;
        }
        th, td {
            border: 1px solid #bdc3c7;
            padding: 8px;
            text-align: left;
        }
        th {
            background-color: #ecf0f1;
            font-weight: bold;
        }
        code {
            background-color: #f8f9fa;
            padding: 2px 4px;
            border-radius: 3px;
            font-family: Consolas, Monaco, monospace;
        }
        pre {
            background-color: #f8f9fa;
            padding: 15px;
            border-radius: 5px;
            overflow-x: auto;
        }
        .endpoint {
            background-color: #e8f4fc;
            padding: 10px;
            border-left: 4px solid #3498db;
            margin: 15px 0;
        }
        .note {
            background-color: #fff8e1;
            padding: 10px;
            border-left: 4px solid #ffc107;
            margin: 15px 0;
        }
    </style>
</head>
<body>
    <h1>银联商务代付业务接口文档</h1>
    
    <p>本文档详细说明了银联商务代付业务接口的使用方法，包括接口地址、请求参数、响应参数以及示例代码。</p>
    
    <h2>1. 接口概述</h2>
    <p>银联商务代付业务接口提供了以下功能：</p>
    <ul>
        <li>单笔代付接口</li>
        <li>单笔代付结果查询接口</li>
        <li>可代付余额查询接口</li>
        <li>响应结果解密与验签</li>
    </ul>
    
    <h2>2. 接口地址</h2>
    
    <h3>测试环境</h3>
    <div class="endpoint">
        <p><strong>单笔代付接口：</strong> https://mobl-test.chinaums.com/uisouterfront/df/singlepayment/process</p>
        <p><strong>单笔代付结果查询接口：</strong> https://mobl-test.chinaums.com/uisouterfront/df/qrypaymentstatus/process</p>
        <p><strong>可代付余额查询接口：</strong> https://mobl-test.chinaums.com/uisouterfront/df/qrypaymentbalance/process</p>
    </div>
    
    <h3>生产环境</h3>
    <div class="endpoint">
        <p><strong>单笔代付接口：</strong> https://managefree.chinaums.com/uisouterfront/df/singlepayment/process</p>
        <p><strong>单笔代付结果查询接口：</strong> https://managefree.chinaums.com/uisouterfront/df/qrypaymentstatus/process</p>
        <p><strong>可代付余额查询接口：</strong> https://managefree.chinaums.com/uisouterfront/df/qrypaymentbalance/process</p>
    </div>
    
    <h2>3. 安全机制</h2>
    <p>银联商务代付业务接口采用以下安全机制：</p>
    <ul>
        <li><strong>签名认证：</strong> 使用SHA256WithRSA算法对请求参数进行签名</li>
        <li><strong>数据加密：</strong> 使用RSA算法对请求数据进行加密</li>
        <li><strong>数据解密：</strong> 使用RSA算法对响应数据进行解密</li>
        <li><strong>验签验证：</strong> 使用SHA256WithRSA算法对响应数据进行验签</li>
    </ul>
    
    <h2>4. 接口详情</h2>
    
    <h3>4.1 单笔代付接口</h3>
    
    <div class="endpoint">
        <p><strong>请求方式：</strong> POST</p>
        <p><strong>接口地址：</strong> /chinaums/singlePayment</p>
    </div>
    
    <h4>请求参数</h4>
    <table>
        <thead>
            <tr>
                <th>参数名</th>
                <th>类型</th>
                <th>必填</th>
                <th>说明</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>sysOrderId</td>
                <td>String</td>
                <td>是</td>
                <td>系统订单号，外部平台需保证唯一性</td>
            </tr>
            <tr>
                <td>mchntNo</td>
                <td>String</td>
                <td>是</td>
                <td>商户编号</td>
            </tr>
            <tr>
                <td>responseUrl</td>
                <td>String</td>
                <td>否</td>
                <td>代付通知URL</td>
            </tr>
            <tr>
                <td>revAcctName</td>
                <td>String</td>
                <td>是</td>
                <td>收款人姓名</td>
            </tr>
            <tr>
                <td>revIdCardNum</td>
                <td>String</td>
                <td>是</td>
                <td>收款人身份证号</td>
            </tr>
            <tr>
                <td>revAcctNo</td>
                <td>String</td>
                <td>是</td>
                <td>收款账号</td>
            </tr>
            <tr>
                <td>payAmt</td>
                <td>String</td>
                <td>是</td>
                <td>代付金额，单位分</td>
            </tr>
            <tr>
                <td>remark</td>
                <td>String</td>
                <td>否</td>
                <td>备注信息</td>
            </tr>
            <tr>
                <td>verify</td>
                <td>String</td>
                <td>否</td>
                <td>是否需要实名验证，默认false</td>
            </tr>
            <tr>
                <td>mobilePhone</td>
                <td>String</td>
                <td>否</td>
                <td>收款人手机号</td>
            </tr>
            <tr>
                <td>termNo</td>
                <td>String</td>
                <td>否</td>
                <td>终端号</td>
            </tr>
        </tbody>
    </table>
    
    <h4>请求示例</h4>
    <pre>
POST /chinaums/singlePayment?isProduction=false HTTP/1.1
Content-Type: application/json

{
    "sysOrderId": "TEST202301010001",
    "mchntNo": "103290070111234",
    "responseUrl": "https://www.example.com/callback",
    "revAcctName": "张三",
    "revIdCardNum": "341126197709218366",
    "revAcctNo": "6221558812340000",
    "payAmt": "1000",
    "remark": "测试代付"
}
    </pre>
    
    <h3>4.2 单笔代付结果查询接口</h3>
    
    <div class="endpoint">
        <p><strong>请求方式：</strong> GET</p>
        <p><strong>接口地址：</strong> /chinaums/queryPaymentStatus</p>
    </div>
    
    <h4>请求参数</h4>
    <table>
        <thead>
            <tr>
                <th>参数名</th>
                <th>类型</th>
                <th>必填</th>
                <th>说明</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>sysOrderId</td>
                <td>String</td>
                <td>是</td>
                <td>系统订单号</td>
            </tr>
            <tr>
                <td>mchntNo</td>
                <td>String</td>
                <td>是</td>
                <td>商户编号</td>
            </tr>
            <tr>
                <td>trxDate</td>
                <td>String</td>
                <td>是</td>
                <td>交易日期，格式yyyyMMdd</td>
            </tr>
            <tr>
                <td>isProduction</td>
                <td>Boolean</td>
                <td>否</td>
                <td>是否生产环境，默认false</td>
            </tr>
        </tbody>
    </table>
    
    <h4>请求示例</h4>
    <pre>
GET /chinaums/queryPaymentStatus?sysOrderId=TEST202301010001&mchntNo=103290070111234&trxDate=20230101&isProduction=false HTTP/1.1
    </pre>
    
    <h3>4.3 可代付余额查询接口</h3>
    
    <div class="endpoint">
        <p><strong>请求方式：</strong> GET</p>
        <p><strong>接口地址：</strong> /chinaums/queryPaymentBalance</p>
    </div>
    
    <h4>请求参数</h4>
    <table>
        <thead>
            <tr>
                <th>参数名</th>
                <th>类型</th>
                <th>必填</th>
                <th>说明</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>mchntNo</td>
                <td>String</td>
                <td>是</td>
                <td>商户编号</td>
            </tr>
            <tr>
                <td>isProduction</td>
                <td>Boolean</td>
                <td>否</td>
                <td>是否生产环境，默认false</td>
            </tr>
        </tbody>
    </table>
    
    <h4>请求示例</h4>
    <pre>
GET /chinaums/queryPaymentBalance?mchntNo=103290070111234&isProduction=false HTTP/1.1
    </pre>
    
    <h3>4.4 解密并验签响应结果</h3>
    
    <div class="endpoint">
        <p><strong>请求方式：</strong> POST</p>
        <p><strong>接口地址：</strong> /chinaums/decryptAndVerify</p>
    </div>
    
    <h4>请求参数</h4>
    <table>
        <thead>
            <tr>
                <th>参数名</th>
                <th>类型</th>
                <th>必填</th>
                <th>说明</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>content</td>
                <td>String</td>
                <td>是</td>
                <td>响应内容密文</td>
            </tr>
        </tbody>
    </table>
    
    <h4>请求示例</h4>
    <pre>
POST /chinaums/decryptAndVerify HTTP/1.1
Content-Type: application/json

{
    "content": "8ba67e4366efbae7d035ceaffbad00c8a24e9975f0cd69254e96f49075858c1cc922aee1532e370c725a26989bcd4e56a2c5f162e4868853dcc076122d24ddba94845fd116963273200b06985e3fbeee30351197607babfaba3757832f287da8c21b4e9ec25dea57fc7d000e6a8cca333b14483a5c8aa16e263b22c432df1498e6f2e294f862e685149668e507220698b70dd213a33bcb28226baaec92c968cb439d7b050a6219183d1983c257faccf128dad7e633b773fa3522f6bf58d07c5500dd938d615ac8bf2e6ded60c9159bc70962ef9219302c919ad8844224e73a6e82987419c64954c48f6711d58956abd5fac6c054f0c40f6383edf0c6a797f67f44290f4f03360540fe741818012ad4ab13bedd22a8f07ab11d4fcc67926976738b0e58b14ac47623a1299d4be5719397cf9905be1a7063161a33e9da41f1bbba5f38124cc55033ab4541a73be71b6c2262e46132431e004418db8fee97de7186727aadd808c5ce4bd2a37f602330430b957c4b5c5fc684e28eb9ac568649857e4f60c409240a52965bccd9a6d7c24b5b65aa930f062ff450d6d9aaad3c3a0ead407c0272412c653f62d345dfce6151a66bfabcfd8b4898ac9c8d78ef27ab78d17250deab5e305957c0dbbd6b4f7b42de28be86f5c95fc53b32c85ff5ce332b2e7b729af3384b8b818df50d15b642c8b162555d7c7db87470e1533891173e886857f932cbaafd6603525bab67a16baf611bf85e895fe400d67212f671ed051a4598d962ebaa20dc03df22b9031bc94dda4a3a013034a69a82c2530e3ff8f4e6aba48f9ed6b668e5e3fee503f751544f1350d703c3d768ac90e3bdda3f446d4d3baa805a17b418abf441a1a991a148be4fa3c242e65c7d36ec9e4d69a8f9680fd0226ae97b134855fc41d80efbffc21e097941977bde2833a8c267e52ce9f6105720aad6649a1824db2202a8569b80f2eed6f5ae5696918f34a050b1ac34389a98b295b77317da1724612fedd4cfed6c2881dc3867bf30408b31dd85c095159d0e7b1980500bdb3f73e9efbcdd077316a7f0d17c7d26eb5c59962f9b4f322d83d0ae7aab9ea8d48a13df6b367b9f48aaf68663d7015c9ceb10b86f629987a5423ca98f3b3c3dfc0df5cb0529f1cfe0800b2ded16605d4b87a27dce861c99fd875699cafe5a2bf754ed658d42626b41cf18dd96673ab411c811b19e6907ac3ba3da59738126d8e07be7d07e1e32a0bc87e0846b4d0b61fd39e05cefcd50b879cf162152f36d6e8a9ab6f40a54278975ce1e280ec545c8f3791ea4b6fc8158f310c2c41543e607f5ce7c5fcb7e0ee8a7f3b95bc7878b85fe63541bc69c21d3715d5a812c7094a708628176afb54da99562564a5aede5ccff3cf70ee3cdbe6a4d96cd7ebb8a88e0927235019e4976cd7606c7c5b612354a8d0af0422dae61f434bdc1"
}
    </pre>
    
    <h2>5. 配置说明</h2>
    
    <h3>5.1 配置文件</h3>
    <p>银联商务代付业务的配置位于 <code>application-chinaums.yml</code> 文件中：</p>
    
    <pre>
# 银联商务代付业务配置
chinaums:
  # 系统编号
  sys-id: "10003"
  
  # 请求来源标识
  msg-src: "API"
  
  # 是否生产环境
  production: false
  
  # 测试环境URL配置
  test:
    single-payment-url: "https://mobl-test.chinaums.com/uisouterfront/df/singlepayment/process"
    query-payment-status-url: "https://mobl-test.chinaums.com/uisouterfront/df/qrypaymentstatus/process"
    query-payment-balance-url: "https://mobl-test.chinaums.com/uisouterfront/df/qrypaymentbalance/process"
  
  # 生产环境URL配置
  production-config:
    single-payment-url: "https://managefree.chinaums.com/uisouterfront/df/singlepayment/process"
    query-payment-status-url: "https://managefree.chinaums.com/uisouterfront/df/qrypaymentstatus/process"
    query-payment-balance-url: "https://managefree.chinaums.com/uisouterfront/df/qrypaymentbalance/process"
  
  # 外部平台私钥（需要根据实际情况配置）
  private-key: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDAAbXA7tnnMuWV6WO1bKEKGyKZRFcRCGDW+UfGFZdx0MEm6+fKTNGTsalEFwFPK36YtQFXcN0FciGmQp1wGts4IqLaEzk9az5UcxIfR00JxpNsTYSZb82ZMpj52WF0FHtyj7qE+K3k/FcKCcEHQ3Soa9LL/GQpyVO0yhxeV5tiRfnHoJxxCRHp3jM//VnlCd6koTwPNPFKsf8Vf+dtGA3/BZPFoHvFP0+vfLmEi2TIHO1f1CZDg67TiC/Kkusl0XBiUAXhjAz1SleNQzKHtUVPbVluBtG8ydk8kcLpqDDST6WPnHg5NgHt9qXp0vOLO7ABkQz+dGCXKm+tWXHnRjj1AgMBAAECggEAMm7AjMKwHZgy0aOR+w9jZUInXlai/+hRd2XWwmLdepm4gj6ojWyMB908dpQMVf04rWetyIfupgWKbR9GNzH2rtH6MImoGUfYAVqQQgL6azzrcCEUWTESsdCmecntXQ4cNsUl2tNu6ZyWSB6zwvKm664Wmlna/VbSU8RamzUrrS362gxNFdcEyvCstlnNx1aC5VCRFHm6uBO2uFSYR4dh4e0KpEmYsPT41k93Z4KQHFTCwcvuQu+or5WKL44hKYHyXoZbWiZhfvBRXBVDT7TLmObkeQXAr/Uu1SO5AkblYqG0dyYVy1ea2xANjt8Mw+OP4kRu8IFikALwWp4iYdyAaQKBgQD5mrsx6KrRHbtpBZzHBcEL+/tttA8YAskH2NlkEcGDPcwwULdEYRUUEvX5J+9sTwZHLnE6O9YKI0UtbEBLmDGDfoHy9OM0NCHEaxmZJvmizzfGGc4u/+EtrNCZh1nXUvz1cPip6tywpuHuIgcdAczm0kD9vMWcKHWJSZv+gdClpwKBgQDE7StEIc/c4/fYjIzUaMh6NHqGGB/SpqpfyKHdNZG1xhacN3zY44fO4X8U93uV+thhY3a66TjvvfC2kQAidWWwn4DzmOgWCSPPtuYuI5vouqW/HL8rLKf3hV2rGCC6fz9PDgjy1tl6ZxI10YsA0VjWuHQ9OcQjBl/ypoGfTCJ4AwKBgQCvMhwSe+zpuqTAol/YkgFeGA/ygF/XypywFVUBGDVrmQSpJP590GarIGPl7lHvA8i0TbTL2xPxKbB0oXa/mKOoWDN+BMU07yKEa2gcR28RB8FuGs7NzmyPUq1YFdjJekZzQEhJe8BLfdc2/ktf4NOhcBKOBuHtKbjWFASaLyP0IQKBgHjRSYozdGQBOT4SfRSUdOsE52b9xghnWIALh8M/6nWrYpPVNzOZ5Oh4UI98hsYtcDPP4jgqflQYJGbd70c0337NXUAWv81FLkNx4ybLkgvm92mZKXBDpYmmuSEPXIUPLLhD1Bmo1yTRt8ptFOsbhXW3FRm7JyqV7qfgoAYrn7ohAoGAT2YHHABe8UHfo8ZnLKjjC3FfUcrGd87LTB8EbADVb+Vuak7/8/FTGRDGxygeH3/haB86Dv1nRQJ2Jp1fS9HrWfX/cart1H6Ef/FKT6Td3aCZAwM6kTLWkDepX+2qWW3pnKytrnp1rHFu9XIR+iFlG2hFOg+ppzUKfX3L3A57xDU="
  
  # 银商系统公钥（需要根据实际情况配置）
  public-key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu13Ykr8Q4ACqnYMfLL5kgV2JsUC7TQEeWR70Zpulqq6JeujD6dCupnYnGhnMmePasgBZT0rIKGvoUEe5tMS1sfYo6dMqaAwcVfe4XOQaPSQs10XDSMB689+ImZmhECEBJkbKs7K+BBJXBOZGkgHBZsd4pn3vlF4E2yPTrfrcn9OEXZAKrUb/jZm6suzHoXSljqtHWwT7OwQoIX+Q/27gYA6PuGpFFmr4Xtc4a/AqIHeCC4TinbgboD8HqfL0ZoC4NG6Xm2KJ9wK66MbS7sYRiK+7pctZkZLxIJ47Ro5Psuxs4owTdtY7b1aHun9GoUT6Wm4mRO0asvBv0XKn05qn9wIDAQAB"
    </pre>
    
    <h2>6. 使用示例</h2>
    
    <h3>6.1 Java代码示例</h3>
    <pre>
// 注入服务
@Autowired
private ChinaUMSProxyService chinaUMSProxyService;

// 单笔代付示例
Map&lt;String, String&gt; params = new HashMap&lt;&gt;();
params.put("sysOrderId", "TEST202301010001");
params.put("mchntNo", "103290070111234");
params.put("responseUrl", "https://www.example.com/callback");
params.put("revAcctName", "张三");
params.put("revIdCardNum", "341126197709218366");
params.put("revAcctNo", "6221558812340000");
params.put("payAmt", "1000");
params.put("remark", "测试代付");

// 调用单笔代付接口（测试环境）
Map&lt;String, Object&gt; result = chinaUMSProxyService.singlePayment(params, false);
System.out.println("单笔代付结果：" + result);

// 解密并验签示例
String content = "8ba67e4366efbae7d035ceaffbad00c8a24e9975f0cd69254e96f49075858c1cc922aee1532e370c725a26989bcd4e56a2c5f162e4868853dcc076122d24ddba94845fd116963273200b06985e3fbeee30351197607babfaba3757832f287da8c21b4e9ec25dea57fc7d000e6a8cca333b14483a5c8aa16e263b22c432df1498e6f2e294f862e685149668e507220698b70dd213a33bcb28226baaec92c968cb439d7b050a6219183d1983c257faccf128dad7e633b773fa3522f6bf58d07c5500dd938d615ac8bf2e6ded60c9159bc70962ef9219302c919ad8844224e73a6e82987419c64954c48f6711d58956abd5fac6c054f0c40f6383edf0c6a797f67f44290f4f03360540fe741818012ad4ab13bedd22a8f07ab11d4fcc67926976738b0e58b14ac47623a1299d4be5719397cf9905be1a7063161a33e9da41f1bbba5f38124cc55033ab4541a73be71b6c2262e46132431e004418db8fee97de7186727aadd808c5ce4bd2a37f602330430b957c4b5c5fc684e28eb9ac568649857e4f60c409240a52965bccd9a6d7c24b5b65aa930f062ff450d6d9aaad3c3a0ead407c0272412c653f62d345dfce6151a66bfabcfd8b4898ac9c8d78ef27ab78d17250deab5e305957c0dbbd6b4f7b42de28be86f5c95fc53b32c85ff5ce332b2e7b729af3384b8b818df50d15b642c8b162555d7c7db87470e1533891173e886857f932cbaafd6603525bab67a16baf611bf85e895fe400d67212f671ed051a4598d962ebaa20dc03df22b9031bc94dda4a3a013034a69a82c2530e3ff8f4e6aba48f9ed6b668e5e3fee503f751544f1350d703c3d768ac90e3bdda3f446d4d3baa805a17b418abf441a1a991a148be4fa3c242e65c7d36ec9e4d69a8f9680fd0226ae97b134855fc41d80efbffc21e097941977bde2833a8c267e52ce9f6105720aad6649a1824db2202a8569b80f2eed6f5ae5696918f34a050b1ac34389a98b295b77317da1724612fedd4cfed6c2881dc3867bf30408b31dd85c095159d0e7b1980500bdb3f73e9efbcdd077316a7f0d17c7d26eb5c59962f9b4f322d83d0ae7aab9ea8d48a13df6b367b9f48aaf68663d7015c9ceb10b86f629987a5423ca98f3b3c3dfc0df5cb0529f1cfe0800b2ded16605d4b87a27dce861c99fd875699cafe5a2bf754ed658d42626b41cf18dd96673ab411c811b19e6907ac3ba3da59738126d8e07be7d07e1e32a0bc87e0846b4d0b61fd39e05cefcd50b879cf162152f36d6e8a9ab6f40a54278975ce1e280ec545c8f3791ea4b6fc8158f310c2c41543e607f5ce7c5fcb7e0ee8a7f3b95bc7878b85fe63541bc69c21d3715d5a812c7094a708628176afb54da99562564a5aede5ccff3cf70ee3cdbe6a4d96cd7ebb8a88e0927235019e4976cd7606c7c5b612354a8d0af0422dae61f434bdc1";
Map&lt;String, Object&gt; decryptResult = chinaUMSProxyService.decryptAndVerify(content);
System.out.println("解密验签结果：" + decryptResult);
    </pre>
    
    <h3>6.2 HTTP请求示例</h3>
    <pre>
# 单笔代付接口
curl -X POST \
  'http://localhost:9527/vegetable-cloud/chinaums/singlePayment?isProduction=false' \
  -H 'Content-Type: application/json' \
  -d '{
    "sysOrderId": "TEST202301010001",
    "mchntNo": "103290070111234",
    "responseUrl": "https://www.example.com/callback",
    "revAcctName": "张三",
    "revIdCardNum": "341126197709218366",
    "revAcctNo": "6221558812340000",
    "payAmt": "1000",
    "remark": "测试代付"
}'

# 单笔代付结果查询接口
curl -X GET \
  'http://localhost:9527/vegetable-cloud/chinaums/queryPaymentStatus?sysOrderId=TEST202301010001&mchntNo=103290070111234&trxDate=20230101&isProduction=false'

# 可代付余额查询接口
curl -X GET \
  'http://localhost:9527/vegetable-cloud/chinaums/queryPaymentBalance?mchntNo=103290070111234&isProduction=false'

# 解密并验签响应结果
curl -X POST \
  'http://localhost:9527/vegetable-cloud/chinaums/decryptAndVerify' \
  -H 'Content-Type: application/json' \
  -d '{
    "content": "8ba67e4366efbae7d035ceaffbad00c8a24e9975f0cd69254e96f49075858c1cc922aee1532e370c725a26989bcd4e56a2c5f162e4868853dcc076122d24ddba94845fd116963273200b06985e3fbeee30351197607babfaba3757832f287da8c21b4e9ec25dea57fc7d000e6a8cca333b14483a5c8aa16e263b22c432df1498e6f2e294f862e685149668e507220698b70dd213a33bcb28226baaec92c968cb439d7b050a6219183d1983c257faccf128dad7e633b773fa3522f6bf58d07c5500dd938d615ac8bf2e6ded60c9159bc70962ef9219302c919ad8844224e73a6e82987419c64954c48f6711d58956abd5fac6c054f0c40f6383edf0c6a797f67f44290f4f03360540fe741818012ad4ab13bedd22a8f07ab11d4fcc67926976738b0e58b14ac47623a1299d4be5719397cf9905be1a7063161a33e9da41f1bbba5f38124cc55033ab4541a73be71b6c2262e46132431e004418db8fee97de7186727aadd808c5ce4bd2a37f602330430b957c4b5c5fc684e28eb9ac568649857e4f60c409240a52965bccd9a6d7c24b5b65aa930f062ff450d6d9aaad3c3a0ead407c0272412c653f62d345dfce6151a66bfabcfd8b4898ac9c8d78ef27ab78d17250deab5e305957c0dbbd6b4f7b42de28be86f5c95fc53b32c85ff5ce332b2e7b729af3384b8b818df50d15b642c8b162555d7c7db87470e1533891173e886857f932cbaafd6603525bab67a16baf611bf85e895fe400d67212f671ed051a4598d962ebaa20dc03df22b9031bc94dda4a3a013034a69a82c2530e3ff8f4e6aba48f9ed6b668e5e3fee503f751544f1350d703c3d768ac90e3bdda3f446d4d3baa805a17b418abf441a1a991a148be4fa3c242e65c7d36ec9e4d69a8f9680fd0226ae97b134855fc41d80efbffc21e097941977bde2833a8c267e52ce9f6105720aad6649a1824db2202a8569b80f2eed6f5ae5696918f34a050b1ac34389a98b295b77317da1724612fedd4cfed6c2881dc3867bf30408b31dd85c095159d0e7b1980500bdb3f73e9efbcdd077316a7f0d17c7d26eb5c59962f9b4f322d83d0ae7aab9ea8d48a13df6b367b9f48aaf68663d7015c9ceb10b86f629987a5423ca98f3b3c3dfc0df5cb0529f1cfe0800b2ded16605d4b87a27dce861c99fd875699cafe5a2bf754ed658d42626b41cf18dd96673ab411c811b19e6907ac3ba3da59738126d8e07be7d07e1e32a0bc87e0846b4d0b61fd39e05cefcd50b879cf162152f36d6e8a9ab6f40a54278975ce1e280ec545c8f3791ea4b6fc8158f310c2c41543e607f5ce7c5fcb7e0ee8a7f3b95bc7878b85fe63541bc69c21d3715d5a812c7094a708628176afb54da99562564a5aede5ccff3cf70ee3cdbe6a4d96cd7ebb8a88e0927235019e4976cd7606c7c5b612354a8d0af0422dae61f434bdc1"
}'
    </pre>
</body>
</html>